﻿define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'ai-helper'], function ($, undefined, Backend, Table, Form, AiHelper) {

    var Controller = {
        api: {
            formatter: {
                // 树型节点名称格式化函数
                treeNodeName: function (value, row, index) {
                    var level = row.level || 0;
                    var indent = '';
                    var icon = '';
                    var connector = '';

                    // 添加缩进，根据层级调整缩进大小
                    for (var i = 0; i < level; i++) {
                        if (i < 2) {
                            // 一级和二级使用标准缩进
                            indent += '<span class="tree-indent"></span>';
                        } else {
                            // 三级和四级使用更大的缩进
                            indent += '<span class="tree-indent-large"></span>';
                        }
                    }

                    // 根据层级和是否有子节点添加图标和连接线
                    if (level > 0) {
                        // 添加连接线
                        connector = '<span class="tree-connector">├── </span>';

                        // 检查是否是最后一个同级节点
                        var allData = $('#table').bootstrapTable('getData');
                        var isLastSibling = true;
                        for (var i = index + 1; i < allData.length; i++) {
                            var nextRow = allData[i];
                            if (nextRow.level < level) {
                                break; // 遇到更高层级，停止检查
                            }
                            if (nextRow.level === level) {
                                isLastSibling = false;
                                break; // 找到同级节点，不是最后一个
                            }
                        }

                        if (isLastSibling) {
                            connector = '<span class="tree-connector">└── </span>';
                        }

                        // 根据是否有子节点和类型添加图标
                        if (row.haschild && row.haschild > 0) {
                            // 有子节点的分支图标
                            if (row.address_lv_octionlevel === '上课教室') {
                                icon = '<i class="fa fa-door-open text-info tree-icon"></i>';
                            } else {
                                icon = '<i class="fa fa-folder text-warning tree-icon"></i>';
                            }
                        } else {
                            // 叶子节点图标
                            if (row.address_lv_octionlevel === '上课教室') {
                                icon = '<i class="fa fa-door-closed text-muted tree-icon"></i>';
                            } else {
                                icon = '<i class="fa fa-file-o text-muted tree-icon"></i>';
                            }
                        }

                        return '<span class="tree-node">' + indent + connector + icon + value + '</span>';
                    } else {
                        // 根节点
                        icon = '<i class="fa fa-home text-primary tree-icon"></i>';
                        return '<span class="tree-node">' + icon + '<strong>' + value + '</strong></span>';
                    }
                }
            }
        },

        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'ocation/ocation/index?relType=' + Config.relType + '&relId=' + Config.relId,
                    add_url: 'ocation/ocation/add?relType=' + Config.relType + '&relId=' + Config.relId,
                    edit_url: 'ocation/ocation/edit?relType=' + Config.relType + '&relId=' + Config.relId,
                    multi_url: 'ocation/ocation/multi',
                    del_url: 'ocation/ocation/del',
                    export_url: 'coursetable/classplant/export',
                    table: 'fa_ocation',
                }
            });

            var table = $("#table");

            // 保存页面初始滚动位置
            var initialScrollTop = $(window).scrollTop();

            // 城市和学校过滤功能已移至index.js

            // 添加选项卡点击事件处理
            $('#toolbar').on('click', '[data-filter]', function () {
                // 移除所有按钮的active类
                $('#toolbar [data-filter]').removeClass('active');
                // 为当前点击的按钮添加active类
                $(this).addClass('active');

                // 获取过滤值
                var filterValue = $(this).data('filter');

                // 保存过滤值到全局变量
                window.currentFilter = filterValue;

                // 直接过滤表格数据
                filterTableData(filterValue);

                // filterTableData 后，再次过滤掉子教学点里没有上课教室的标签级别及以下的节点记录

            });

            // 前端过滤表格数据
            function filterTableData(filterValue) {
                // 获取表格实例
                var table = $('#table');

                // 获取所有表格数据
                var allData = window.allData || table.bootstrapTable('getData');

                // 根据过滤条件筛选数据
                var filteredData = allData.filter(function (row) {
                    // 检查 school_location_type 是否存在且为字符串
                    var locationType = row.school_location_type && typeof row.school_location_type === 'string' ? row.school_location_type : '';

                    if (filterValue === '校内') {
                        // 点击了校内，只显示校内教学点
                        if (row.address_lv_octionlevel === '上课教室') {
                            return locationType.indexOf('校内') !== -1;
                        }
                        // 保留一级和二级教学点
                        return true;
                    } else if (filterValue === '校外') {
                        // 点击了校外，只显示校外教学点
                        if (row.address_lv_octionlevel === '上课教室') {
                            return locationType.indexOf('校外') !== -1;
                        }
                        // 保留一级和二级教学点
                        return true;
                    } else if (filterValue === '全部') {
                        // 点击了全部，恢复原始数据
                        return true;
                    }
                    return true;
                });

                // 再次过滤掉子教学点里没有上课教室的标签级别及以下的节点记录
                var finalFilteredData = [];
                var parentMap = {};
                var idMap = {};

                // 构建父子关系映射和ID映射
                filteredData.forEach(function (row) {
                    if (!parentMap[row.parent]) {
                        parentMap[row.parent] = [];
                    }
                    parentMap[row.parent].push(row);
                    idMap[row.id] = row;
                });

                // 递归检查子节点是否有上课教室
                function hasClassroom(nodeId) {
                    var children = parentMap[nodeId] || [];
                    for (var i = 0; i < children.length; i++) {
                        var child = children[i];
                        if (child.address_lv_octionlevel === '上课教室') {
                            return true;
                        }
                        if (hasClassroom(child.id)) {
                            return true;
                        }
                    }
                    return false;
                }

                // 过滤数据
                filteredData.forEach(function (row) {
                    if (row.address_lv_octionlevel === '上课教室') {
                        // 直接保留上课教室
                        finalFilteredData.push(row);
                    } else if (row.level <= 2) {
                        // 保留一级和二级教学点
                        finalFilteredData.push(row);
                    } else {
                        // 检查三级和四级教学点是否有上课教室
                        if (hasClassroom(row.id)) {
                            finalFilteredData.push(row);
                        }
                    }
                });

                // 再次过滤掉没有上课教室的标签级别及以下的节点记录
                finalFilteredData = finalFilteredData.filter(function (row) {
                    if (row.address_lv_octionlevel === '上课教室') {
                        return true;
                    } else if (row.level <= 2) {
                        return true;
                    } else {
                        return hasClassroom(row.id);
                    }
                });

                // 过滤掉没有上课教室的一级教学点
                finalFilteredData = finalFilteredData.filter(function (row) {
                    if (row.level === 1) {
                        // 检查一级教学点是否有上课教室
                        return hasClassroom(row.id);
                    }
                    return true;
                });

                // 再次过滤掉子教学点里没有上课教室的标签级别及以下的节点记录
                // 包括一级教学点、二级教学点和标签
                finalFilteredData = finalFilteredData.filter(function (row) {
                    // 如果是上课教室，直接保留
                    if (row.address_lv_octionlevel === '上课教室') {
                        return true;
                    }

                    // 如果是标签级别及以下的节点（一级教学点、二级教学点、标签）
                    if (row.address_lv_octionlevel === '一级教学点' ||
                        row.address_lv_octionlevel === '二级教学点' ||
                        row.address_lv_octionlevel === '标签') {
                        // 检查该节点的子节点中是否包含上课教室
                        return hasClassroom(row.id);
                    }

                    // 其他级别的节点保留
                    return true;
                });

                // 销毁并重新初始化表格以加载过滤后的数据
                table.bootstrapTable('destroy');
                table.bootstrapTable({
                    data: finalFilteredData,
                    rowAttributes: function (row, index) {
                        if (row.parent == '#') {
                            return { class: 'disabled-row' }; // 添加禁用样式
                        }
                        return {};
                    },
                    escape: false,
                    pageSize: 5000,
                    pk: 'id',
                    sortName: 'id',
                    columns: [
                        [
                            { checkbox: true },
                            { field: 'id', title: __('Id') },
                            { field: 'parent', title: "父ID" },
                            {
                                field: 'seq_num', title: '序', align: 'center', width: '24px', formatter: function (value, row, index) {
                                    // 只对教学点级别为上课教室的数据显示序号
                                    if (row.address_lv_octionlevel === '上课教室') {
                                        // 使用闭包保存计数器
                                        if (!this.classroomCounter) {
                                            this.classroomCounter = 0;
                                        }
                                        return ++this.classroomCounter;
                                    }
                                    return '';
                                }
                            },
                            { field: 'name', title: '教学点名称', align: 'left', width: '400px' },
                            { field: 'entvirt', title: '实体或虚拟', align: 'left' },
                            {
                                field: 'school_location_type', title: '校内或校外', width: '120px', align: 'left', formatter: function (value, row, index) {
                                    if (value == '校内') {
                                        return '<span class="bg-success" style="padding: 2px 5px; border-radius: 3px; color: white; background-color: #28a745 !important;">' + value + '</span>';
                                    } else if (value == '校外') {
                                        return '<span class="bg-info" style="padding: 2px 5px; border-radius: 3px; color: white; background-color: #17a2b8 !important;">' + value + '</span>';
                                    } else if (value == '校内,校外') {
                                        // 分别为'校内'和'校外'设置不同背景色
                                        return '<span class="bg-success" style="padding: 2px 5px; border-radius: 3px; color: white; background-color: #28a745 !important;">校内</span>&nbsp;<span class="bg-info" style="padding: 2px 5px; border-radius: 3px; color: white; background-color: #17a2b8 !important;">校外</span>';
                                    }
                                    return value;
                                }
                            },
                            { field: 'address_lv_octionlevel', title: '教学点级别', width: '120px', align: 'left' },
                            { field: 'ocation_type', title: '教室类型', align: 'left' },
                            { field: 'weekdays', title: '周几', align: 'left' },
                            { field: 'address', title: '地址', align: 'left' },
                            { field: 'endtime', title: '使用截止时间', align: 'left' },
                            { field: 'ocation_id', title: 'ocation_id' },
                            { field: 'classes_id', title: 'classes_id' },
                            { field: 'status', title: '状态', operate: false, formatter: Controller.api.formatter.changeStatus },
                            {
                                field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate,
                                buttons: [
                                    {
                                        name: 'edit',
                                        title: __('Edit'),
                                        icon: 'fa fa-pencil',
                                        classname: 'btn btn-xs btn-success btn-editone btn-dialog',
                                        url: 'ocation/ocation/edit',
                                        extend: 'data-area=["80%","80%"] data-title="编辑教学点"'
                                    }
                                ]
                            }
                        ]
                    ]
                });
            }

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                queryParams: function (params) {
                    params.rel_type = Config.relType;
                    params.rel_id = Config.relId;

                    // 添加城市和学校过滤参数
                    var cityId = $('#c-cityarea_id').val();
                    var schoolId = $('#c-school_id').val();

                    if (cityId) {
                        params.city_id = cityId;
                    }
                    if (schoolId) {
                        params.school_id = schoolId;
                    }



                    // 移除后端过滤逻辑
                    // var filterValue = $('#toolbar .active').data('filter');
                    // if (filterValue && filterValue !== 'all') {
                    //     params.filter = JSON.stringify({school_location_type: filterValue});
                    // }

                    return params;
                },
                rowAttributes: function (row, index) {
                    if (row.parent == '#') {
                        return { class: 'disabled-row' }; // 添加禁用样式
                    }
                    return {};
                },
                escape: false,
                pageSize: 5000,
                pk: 'id',
                sortName: 'id', //要使排序生效，在前面添加 weigh desc, 并且数据表weigh字段不能全为0,controller里$list=...->order前再添加->order("weigh desc")
                columns: [
                    [
                        { checkbox: true },
                        { field: 'id', title: __('Id') },
                        { field: 'parent', title: "父ID" },
                        {
                            field: 'seq_num', title: '序', align: 'center', width: '24px', formatter: function (value, row, index) {
                                // 只对教学点级别为上课教室的数据显示序号
                                if (row.address_lv_octionlevel === '上课教室') {
                                    // 使用闭包保存计数器
                                    if (!this.classroomCounter) {
                                        this.classroomCounter = 0;
                                    }
                                    return ++this.classroomCounter;
                                }
                                return '';
                            }
                        },
                        { field: 'name', title: '教学点名称', align: 'left', width: '400px' },
                        { field: 'entvirt', title: '实体或虚拟', align: 'left' },
                        {
                            field: 'school_location_type', title: '校内或校外', width: '120px', align: 'left', formatter: function (value, row, index) {
                                if (value == '校内') {
                                    return '<span class="bg-success" style="padding: 2px 5px; border-radius: 3px; color: white; background-color: #28a745 !important;">' + value + '</span>';
                                } else if (value == '校外') {
                                    return '<span class="bg-info" style="padding: 2px 5px; border-radius: 3px; color: white; background-color: #17a2b8 !important;">' + value + '</span>';
                                } else if (value == '校内,校外') {
                                    // 分别为'校内'和'校外'设置不同背景色
                                    return '<span class="bg-success" style="padding: 2px 5px; border-radius: 3px; color: white; background-color: #28a745 !important;">校内</span>&nbsp;<span class="bg-info" style="padding: 2px 5px; border-radius: 3px; color: white; background-color: #17a2b8 !important;">校外</span>';
                                }
                                return value;
                            }
                        },
                        { field: 'address_lv_octionlevel', title: '教学点级别', width: '120px', align: 'left' },
                        { field: 'ocation_type', title: '教室类型', align: 'left' },
                        { field: 'weekdays', title: '周几', align: 'left' },
                        { field: 'address', title: '地址', align: 'left' },
                        { field: 'endtime', title: '使用截止时间', align: 'left' },
                        { field: 'ocation_id', title: 'ocation_id' },
                        { field: 'classes_id', title: 'classes_id' },
                        { field: 'status', title: '状态', operate: false, formatter: Controller.api.formatter.changeStatus },
                        {
                            field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'edit',
                                    title: __('Edit'),
                                    icon: 'fa fa-pencil',
                                    classname: 'btn btn-xs btn-success btn-editone btn-dialog',
                                    url: 'ocation/ocation/edit',
                                    extend: 'data-area=["80%","80%"] data-title="编辑教学点"'
                                }
                            ]
                        }
                    ]
                ]
            });

            function toggleChildren(id, isChecked, index) {
                if (index > 2) return;
                $('tbody tr').each(function () {
                    var pid = $(this).find('td:eq(2)').text(); // 获取当前行的PID
                    if (pid == id) {
                        var childId = $(this).find('td:eq(1)').text(); // 获取当前行的ID
                        $(this).find('input[name="btSelectItem"]').prop('checked', isChecked);
                        toggleChildren(childId, isChecked, 2); // 递归处理子节点
                    }
                });
            }

            table.on('load-success.bs.table', function (e, data) {
                // 保存当前滚动位置
                var currentScrollTop = $(window).scrollTop();

                // 保存原始数据
                window.allData = data.rows || data;

                // 重置教室序号计数器
                table.bootstrapTable('getOptions').columns[0].forEach(function (column) {
                    if (column.field === 'seq_num' && column.formatter) {
                        column.formatter.classroomCounter = 0;
                    }
                });


                // 恢复滚动位置，防止表格加载后自动滚动到底部
                setTimeout(function () {
                    $(window).scrollTop(currentScrollTop);
                }, 50);
            });

            table.on('load-success.bs.table', function (e, data) {
                // 保存当前滚动位置
                var currentScrollTop = $(window).scrollTop();

                // 绑定导出按钮点击事件
                $(document).on("click", ".btn-export", function () {
                    var selectedRows = table.bootstrapTable('getSelections');
                    var ids = [];
                    for (var i = 0; i < selectedRows.length; i++) {
                        ids.push(selectedRows[i].id); // 假设数据中的 id 字段存储的是唯一标识
                    }
                    var exportUrl = $.fn.bootstrapTable.defaults.extend.export_url;
                    if (ids.length > 0) {
                        var idParams = ids.join(',');
                        if (exportUrl.indexOf('?') === -1) {
                            exportUrl += '?ids=' + idParams;
                        } else {
                            exportUrl += '&ids=' + idParams;
                        }
                    }
                    var downloadIframe = $('#download-iframe');
                    if (downloadIframe.length === 0) {
                        downloadIframe = $('<iframe id="download-iframe" style="display: none;"></iframe>');
                        $('body').append(downloadIframe);
                    }
                    downloadIframe.attr('src', "/" + exportUrl);
                });
                if ($("#message").length > 0) {
                    $("#message").html(data.message);
                }

                // 恢复滚动位置，防止表格加载后自动滚动到底部
                setTimeout(function () {
                    $(window).scrollTop(currentScrollTop);
                }, 50);
            });

            var script = document.createElement('script');
            script.src = '/assets/js/backend/common/index.js';
            document.head.appendChild(script);

            // 为表格绑定事件
            Table.api.bindevent(table);

            // 创建并插入底部工具栏
            setTimeout(function () {
                Controller.api.createBottomToolbar(table);
            }, 100);
        },
        add: function () {
            var script = document.createElement('script');
            script.src = '/assets/js/backend/common/add.js?';
            document.head.appendChild(script);
            var script2 = document.createElement('script');
            script2.src = '/assets/js/backend/common/ocation.js';
            document.head.appendChild(script2);
            // 自动扩展窗口大小到100%

            // 初始化AI助手
            if (typeof AiHelper !== 'undefined') {
                AiHelper.init();
            }

            // 初始化轮播图片管理
            Controller.api.initImageGroups('add');

            Controller.api.bindevent();

            // 等待页面完全加载后再绑定教学点等级变化事件
            $(document).ready(function () {
                Controller.api.bindLevelChange();
            });
        },
        edit: function () {
            var row = JSON.parse($('#row').val());
            var script = document.createElement('script');
            script.src = '/assets/js/backend/common/add.js';
            document.head.appendChild(script);
            var script2 = document.createElement('script');
            script2.src = '/assets/js/backend/common/ocation.js';
            document.head.appendChild(script2);

            // 初始化AI助手
            if (typeof AiHelper !== 'undefined') {
                AiHelper.init();
            }

            // 初始化轮播图片管理
            $(document).ready(function () {
                Controller.api.initImageGroups('edit');
            });

            Controller.api.bindevent();

            // 等待页面完全加载后再绑定教学点等级变化事件
            $(document).ready(function () {
                Controller.api.bindLevelChange();
            });
        },
        api: {
            // 创建底部工具栏
            createBottomToolbar: function (table) {
                var self = this;
                // 等待表格完全加载后再创建底部工具栏
                table.on('load-success.bs.table', function () {
                    // 如果底部工具栏已存在，先移除
                    $('#toolbar-bottom').remove();
                    $('#toolbar-bottom-spacer').remove();

                    // 获取权限检查结果
                    var canAdd = $('#toolbar .btn-add').length > 0 && !$('#toolbar .btn-add').hasClass('hide');
                    var canEdit = $('#toolbar .btn-edit').length > 0 && !$('#toolbar .btn-edit').hasClass('hide');
                    var canDel = $('#toolbar .btn-del').length > 0 && !$('#toolbar .btn-del').hasClass('hide');
                    var canExport = $('#toolbar .btn-export').length > 0 && !$('#toolbar .btn-export').hasClass('hide');
                    var canMulti = $('#toolbar .btn-more').length > 0 && !$('#toolbar .btn-more').hasClass('hide');

                    // 创建底部工具栏HTML - 固定在页面底部，距离底部5px
                    var toolbarHtml = '<div id="toolbar-bottom" class="toolbar" style="position: fixed; bottom: -12px; left: 5px; right: 5px; z-index: 1000; padding: 10px 20px; background-color: #f5f5f5; border: 1px solid #ddd; border-radius: 4px; box-shadow: 0 2px 10px rgba(0,0,0,0.15);">';
                    toolbarHtml += '<a href="javascript:;" class="btn btn-primary btn-refresh" title="刷新" style="margin-right: 5px;"><i class="fa fa-refresh"></i> </a>';

                    if (canAdd) {
                        toolbarHtml += '<a href="javascript:;" class="btn btn-success btn-add" title="添加" style="margin-right: 5px;"><i class="fa fa-plus"></i> 添加</a>';
                    }
                    if (canEdit) {
                        toolbarHtml += '<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled" title="编辑" style="margin-right: 5px;"><i class="fa fa-pencil"></i> 编辑</a>';
                    }
                    if (canDel) {
                        toolbarHtml += '<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled" title="删除" style="margin-right: 5px;"><i class="fa fa-trash"></i> 删除</a>';
                    }
                    if (canExport) {
                        toolbarHtml += '<a href="javascript:;" class="btn btn-warning btn-export btn-disabled disabled" title="导出" style="margin-right: 5px;"><i class="fa fa-download"></i> 导出</a>';
                    }

                    if (canMulti) {
                        toolbarHtml += '<div class="dropdown btn-group" style="margin-right: 5px;">';
                        toolbarHtml += '<a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> 更多</a>';
                        toolbarHtml += '<ul class="dropdown-menu text-left" role="menu">';
                        toolbarHtml += '<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> 设为正常</a></li>';
                        toolbarHtml += '<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> 设为隐藏</a></li>';
                        toolbarHtml += '</ul>';
                        toolbarHtml += '</div>';
                    }

                    toolbarHtml += '</div>';

                    // 将底部工具栏添加到body，因为是固定定位
                    $('body').append(toolbarHtml);

                    // 为页面内容添加底部边距，避免被固定工具栏遮挡
                    if (!$('#toolbar-bottom-spacer').length) {
                        $('body').append('<div id="toolbar-bottom-spacer" style="height: 70px;"></div>');
                    }

                    // 绑定底部工具栏事件
                    self.bindBottomToolbar(table);
                });
            },

            // 绑定底部工具栏事件
            bindBottomToolbar: function (table) {
                // 底部工具栏刷新按钮
                $('#toolbar-bottom .btn-refresh').off('click').on('click', function () {
                    table.bootstrapTable('refresh');
                });

                // 底部工具栏添加按钮
                $('#toolbar-bottom .btn-add').off('click').on('click', function () {
                    $('#toolbar .btn-add').trigger('click');
                });

                // 底部工具栏编辑按钮
                $('#toolbar-bottom .btn-edit').off('click').on('click', function () {
                    $('#toolbar .btn-edit').trigger('click');
                });

                // 底部工具栏删除按钮
                $('#toolbar-bottom .btn-del').off('click').on('click', function () {
                    $('#toolbar .btn-del').trigger('click');
                });

                // 底部工具栏导出按钮
                $('#toolbar-bottom .btn-export').off('click').on('click', function () {
                    $('#toolbar .btn-export').trigger('click');
                });

                // 底部工具栏更多操作按钮
                $('#toolbar-bottom .btn-multi').off('click').on('click', function () {
                    var params = $(this).data('params');
                    $('#toolbar .btn-multi[data-params="' + params + '"]').trigger('click');
                });

                // 监听表格选择状态变化，同步更新底部工具栏按钮状态
                table.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function () {
                    var selections = table.bootstrapTable('getSelections');
                    var hasSelection = selections.length > 0;

                    // 同步按钮状态
                    $('#toolbar-bottom .btn-edit, #toolbar-bottom .btn-del, #toolbar-bottom .btn-export, #toolbar-bottom .btn-more, #toolbar-bottom .btn-multi').toggleClass('btn-disabled disabled', !hasSelection);
                });
            },

            bindevent: function () {
                // 绑定表单提交前事件，确保隐藏字段被更新
                $("form[role=form]").on('submit', function () {
                    // 在表单提交前更新隐藏字段
                    if (typeof Controller.api.updateHiddenField === 'function') {
                        Controller.api.updateHiddenField();
                    }
                });

                Form.api.bindevent($("form[role=form]"));

                // 绑定AI生成事件
                $(document).off('click', '.ai-generate').on('click', '.ai-generate', Controller.api.events.ai['click .ai-generate']);

                // 绑定AI生成教学点详情事件
                $(document).off('click', '.ai-generate-intro').on('click', '.ai-generate-intro', Controller.api.events.ai['click .ai-generate-intro']);

                // 绑定教学点名称实时验证
                Controller.api.bindNameValidation();

                // 绑定教学点等级选择变化事件
                Controller.api.bindLevelChange();
            },
            formatter: {//渲染的方法
                url: function (value, row, index) {
                    return '<div class="input-group input-group-sm" style="width:250px;"><input type="text" class="form-control input-sm" value="' + value + '"><span class="input-group-btn input-group-sm"><a href="' + value + '" target="_blank" class="btn btn-default btn-sm"><i class="fa fa-link"></i></a></span></div>';
                },
                ip: function (value, row, index) {
                    return '<a class="btn btn-xs btn-ip bg-success"><i class="fa fa-map-marker"></i> ' + value + '</a>';
                },
                status: function (value, row, index) {
                    //添加上btn-change可以自定义请求的URL进行数据处理
                    return '<a class="btn-change text-success" data-url="ocation/ocation/status" data-confirm="确认切换状态？" data-id="' + row.id + '"><i class="fa ' + (row.status == 0 || row.status == null ? 'fa-toggle-on fa-flip-horizontal text-gray' : 'fa-toggle-on') + ' fa-2x"></i></a>';
                },
                changeStatus: function (value, row, index) {
                    //添加上btn-change可以自定义请求的URL进行数据处理
                    return '<a class="btn-change text-success" data-url="ocation/ocation/changeStatus" data-confirm="确认切换状态？" data-id="' + row.id + '"><i class="fa ' + (row.status === 0 ? 'fa-toggle-on fa-flip-horizontal text-gray' : 'fa-toggle-on') + ' fa-2x"></i></a>';
                },
            },
            events: {
                ip: {
                    //格式为：方法名+空格+DOM元素
                    'click .btn-ip': function (e, value, row, index) {
                        e.stopPropagation();
                        var container = $("#table").data("bootstrap.table").$container;
                        var options = $("#table").bootstrapTable('getOptions');
                        //这里我们手动将数据填充到表单然后提交
                        $("form.form-commonsearch [name='ip']", container).val(value);
                        $("form.form-commonsearch", container).trigger('submit');
                        Toastr.info("执行了自定义搜索操作");
                    }
                },
                ai: {
                    'click .ai-generate': function (e) {
                        e.preventDefault();
                        e.stopPropagation();

                        var $this = $(this);
                        var inputId = $this.data('input-id');
                        var $input = $('#' + inputId);

                        // 获取当前场所信息作为提示词
                        var locationName = $('#c-name').val() || '教学场所';
                        var locationDesc = $('#c-content').val() || '';
                        var locationAddress = $('#c-address').val() || '';

                        // 构建AI提示词
                        var prompt = '为教学场所生成首页头图，要求：\n';
                        prompt += '场所名称：' + locationName + '\n';
                        if (locationDesc) {
                            prompt += '场所描述：' + locationDesc + '\n';
                        }
                        if (locationAddress) {
                            prompt += '场所地址：' + locationAddress + '\n';
                        }
                        prompt += '风格要求：现代简洁，专业教育氛围，适合作为网站首页头图\n';
                        prompt += '尺寸：横版头图，适合网页展示';

                        // 显示加载状态
                        var originalHtml = $this.html();
                        $this.html('<i class="fa fa-spinner fa-spin"></i> AI生成中...');
                        $this.prop('disabled', true);

                        // 调用AI生成API
                        $.ajax({
                            url: 'ai/ai/generateImage',
                            type: 'POST',
                            data: {
                                prompt: prompt,
                                size: '1024*1024',
                                style: 'professional',
                                provider: 'qianwen'
                            },
                            timeout: 180000, // 3分钟超时
                            success: function (response) {


                                if (response.code === 1 && response.data && response.data.image_url) {
                                    // 将生成的图片URL填充到输入框
                                    $input.val(response.data.image_url);

                                    // 触发change事件
                                    $input.trigger('change');

                                    // 更新预览区域
                                    var $preview = $('#p-image');
                                    if ($preview.length) {
                                        $preview.html('<li style="position: relative; display: inline-block; margin: 5px;"><img src="' + response.data.image_url + '" style="max-width: 100px; max-height: 100px; border: 1px solid #ddd; border-radius: 3px;"><span style="position: absolute; top: -5px; right: -5px; background: #28a745; color: white; border-radius: 50%; width: 20px; height: 20px; text-align: center; line-height: 20px; font-size: 12px;">✓</span></li>');
                                    }

                                    // 显示成功提示
                                    Layer.msg('AI首页头图生成成功！', { icon: 1, time: 3000 });
                                } else {
                                    Layer.msg('AI头图生成失败：' + (response.msg || '未知错误'), { icon: 2, time: 5000 });
                                }
                            },
                            error: function (xhr, status, error) {


                                var errorMsg = 'AI头图生成失败';
                                if (xhr.status === 404) {
                                    errorMsg += '：AI服务不可用';
                                } else if (xhr.status === 500) {
                                    errorMsg += '：服务器错误';
                                } else if (status === 'timeout') {
                                    errorMsg += '：请求超时，AI生成需要较长时间，请稍后重试';
                                } else {
                                    errorMsg += '：' + error;
                                }

                                Layer.msg(errorMsg, { icon: 2, time: 5000 });
                            },
                            complete: function () {
                                // 恢复按钮状态
                                $this.html(originalHtml);
                                $this.prop('disabled', false);
                            }
                        });
                    },

                    'click .ai-generate-intro': function (e) {
                        e.preventDefault();
                        e.stopPropagation();
                        debugger;
                        var $this = $(this);
                        var inputId = $this.data('input-id');
                        var $editor = $('#' + inputId);

                        // 收集教学点信息
                        var formData = Controller.api.collectOcationFormData();


                        if (!formData.name && !formData.address) {
                            Layer.msg('请先填写教学点名称或地址等基本信息', { icon: 2 });
                            return;
                        }

                        // 显示加载状态
                        var originalHtml = $this.html();
                        $this.html('<i class="fa fa-spinner fa-spin"></i> 获取地理信息...');
                        $this.prop('disabled', true);

                        // 如果有经纬度，先获取真实的地理位置信息
                        if (formData.coordinates && formData.coordinates.longitude && formData.coordinates.latitude) {
                            Controller.api.getLocationInfoAndGenerate(formData, $this, $editor, originalHtml);
                        } else {
                            // 没有经纬度，直接生成
                            Controller.api.generateWithFormData(formData, $this, $editor, originalHtml);
                        }
                    }
                }
            },

            // 收集教学点表单数据
            collectOcationFormData: function () {
                var formData = {};

                // 收集教学点ID（用于获取课程信息）
                var ocationId = $('input[name="row[id]"]').val() || $('#h-id').val() || $('#c-id').val();
                if (ocationId && ocationId.trim() !== '') {
                    formData.ocation_id = ocationId.trim();

                } else {

                }

                // 收集教学点名称
                var name = $('#c-name').val();
                if (name) formData.name = name;

                // 收集地址描述
                var address = $('#c-address').val();
                if (address) formData.address = address;

                // 收集经纬度信息（用于地理位置推测）
                var longitude = $('#c-longitude').val();
                var latitude = $('#c-latitude').val();
                if (longitude && latitude) {
                    formData.coordinates = {
                        longitude: longitude,
                        latitude: latitude
                    };
                }

                // 收集行政区划信息
                var provinceText = $('#c-cityarea_id option:selected').text() || $('#province option:selected').text();
                var cityText = $('#city option:selected').text();
                var districtText = $('#county option:selected').text();

                var locationInfo = [];
                if (provinceText && provinceText !== '请选择') locationInfo.push(provinceText);
                if (cityText && cityText !== '请选择') locationInfo.push(cityText);
                if (districtText && districtText !== '请选择') locationInfo.push(districtText);

                if (locationInfo.length > 0) {
                    formData.location = locationInfo.join(' ');
                }

                // 收集教学类型
                var ocationType = $('input[name="row[ocation_type]"]:checked').val();
                var ocationTypeText = '';
                switch (ocationType) {
                    case '1': ocationTypeText = '标准(有桌椅)'; break;
                    case '2': ocationTypeText = '书画(有书画桌)'; break;
                    case '3': ocationTypeText = '肢体(开阔的场地)'; break;
                    case '4': ocationTypeText = '综合(有椅没桌)'; break;
                }
                if (ocationTypeText) formData.ocation_type = ocationTypeText;

                // 收集实体或虚拟
                var entVirt = $('input[name="row[entvirt]"]:checked').val();
                var entVirtText = entVirt === '1' ? '实体' : '虚拟';
                if (entVirtText) formData.entvirt = entVirtText;

                // 收集教学点等级
                var level = $('#c-address_lv_octionlevel').val();
                var levelText = '';
                switch (level) {
                    case '0': levelText = '标签'; break;
                    case '1': levelText = '一级教学点'; break;
                    case '2': levelText = '二级教学点'; break;
                    case '3': levelText = '三级教学点'; break;
                    case '4': levelText = '上课教室'; break;
                }
                if (levelText) formData.level = levelText;

                // 收集主体类型
                var relType = $('#c-rel_type').val();
                var relTypeText = relType === '1' ? '学校' : '社区';
                if (relTypeText) formData.rel_type = relTypeText;

                // 收集使用时间信息
                var startTime = $('#c-starttime').val();
                var endTime = $('#c-endtime').val();
                if (startTime || endTime) {
                    formData.schedule = {
                        start: startTime,
                        end: endTime
                    };
                }

                return formData;
            },

            // 构建教学点详情提示词
            buildOcationIntroPrompt: function (formData) {
                var prompt = '# AI教学点详情生成任务\n\n';
                prompt += '请根据以下信息生成一份专业且实用的教学点详情介绍：\n\n';
                prompt += '## 基本信息\n';

                if (formData.name) {
                    prompt += '**教学点名称：** ' + formData.name + '\n';
                }

                if (formData.location) {
                    prompt += '**所在区域：** ' + formData.location + '\n';
                }

                if (formData.address) {
                    prompt += '**地址描述：** ' + formData.address + '\n';
                }

                if (formData.ocation_type) {
                    prompt += '**教学类型：** ' + formData.ocation_type + '\n';
                }

                if (formData.entvirt) {
                    prompt += '**场地性质：** ' + formData.entvirt + '\n';
                }

                if (formData.level) {
                    prompt += '**教学点等级：** ' + formData.level + '\n';
                }

                if (formData.rel_type) {
                    prompt += '**所属主体：** ' + formData.rel_type + '\n';
                }

                if (formData.schedule && (formData.schedule.start || formData.schedule.end)) {
                    prompt += '**使用时间：** ';
                    if (formData.schedule.start) prompt += '从' + formData.schedule.start;
                    if (formData.schedule.end) prompt += '至' + formData.schedule.end;
                    prompt += '\n';
                }

                prompt += '\n## 生成要求\n';
                prompt += '1. **字数限制**：严格控制在500字以内\n';
                prompt += '2. **内容结构**：必须包含以下6个部分\n';
                prompt += '   - 教学点概述（基本介绍）\n';
                prompt += '   - 设施特色（教学设备和环境）\n';
                prompt += '   - 交通指南（公交路线和行车路线）\n';
                prompt += '   - 周边配套（美食、购物、生活便利）\n';
                prompt += '   - 教学优势（教育特色和服务）\n';
                prompt += '   - 联系服务（咨询和报名信息）（所有联系电话都使用教务处电话：0771-3160330）\n';
                prompt += '3. **语言风格**：专业、实用、有吸引力\n';
                prompt += '4. **格式要求**：使用HTML格式，每个部分用h4标题+p段落\n';
                prompt += '5. **实用信息**：\n';
                prompt += '   - 交通指南要包含具体的公交线路（如"乘坐1路、15路、32路公交车"）和地铁信息\n';
                prompt += '   - 行车路线要提及主要道路和停车信息\n';
                prompt += '   - 周边美食要提及具体类型（如"川菜、粤菜、快餐连锁"等）\n';
                prompt += '   - 周边配套要包含银行、超市、医院等生活便利设施\n';
                prompt += '6. **地域特色**：根据地址描述合理推测所在区域，生成符合当地特色的内容\n\n';
                prompt += '请生成完整的教学点详情介绍：';

                return prompt;
            },

            // 获取地理信息并生成内容
            getLocationInfoAndGenerate: function (formData, $btn, $editor, originalHtml) {
                // 第一步：显示获取地理信息状态
                $btn.html('<i class="fa fa-spinner fa-spin"></i> 第1步：获取地理信息...');


                // 调用百度地图API获取真实地理信息
                $.ajax({
                    url: '/?s=ai/getLocationInfo',
                    type: 'POST',
                    data: {
                        longitude: formData.coordinates.longitude,
                        latitude: formData.coordinates.latitude
                    },
                    timeout: 30000,
                    success: function (response) {


                        if (response.code === 1 && response.data) {
                            // 将真实地理信息合并到表单数据中
                            formData.realLocationData = response.data;

                        } else {

                        }

                        // 第二步：获取课程信息
                        Controller.api.getCoursesInfoAndGenerate(formData, $btn, $editor, originalHtml);
                    },
                    error: function (xhr, status, error) {


                        // 即使获取地理信息失败，也继续获取课程信息
                        Controller.api.getCoursesInfoAndGenerate(formData, $btn, $editor, originalHtml);
                    }
                });
            },

            // 获取课程信息并生成内容
            getCoursesInfoAndGenerate: function (formData, $btn, $editor, originalHtml) {
                // 第二步：显示获取课程信息状态
                $btn.html('<i class="fa fa-spinner fa-spin"></i> 第2步：获取课程信息...');
                console.log('📚 开始获取教学点课程信息');
                console.log('🏫 教学点ID:', formData.ocation_id);

                // 如果有教学点ID，获取课程信息
                if (formData.ocation_id) {
                    $.ajax({
                        url: '/?s=ai/getOcationCourses',
                        type: 'POST',
                        data: {
                            ocation_id: formData.ocation_id
                        },
                        timeout: 30000,
                        success: function (response) {
                            console.log('✅ 课程信息API调用成功:', response);

                            if (response.code === 1 && response.data) {
                                // 将课程信息合并到表单数据中
                                formData.coursesData = response.data;
                                console.log('🎯 获取到课程信息:');
                                console.log('  - 课程总数:', response.data.total_count + '个');
                                console.log('  - 有效课程:', response.data.active_count + '个');
                                console.log('  - 课程分类:', response.data.course_categories.join('、'));

                                // 统计常年开设课程
                                var longTermCourses = response.data.courses.filter(function (course) {
                                    return course.is_long_term;
                                });
                                console.log('  - 常年开设:', longTermCourses.length + '个');
                            } else {
                                console.warn('⚠️ 课程信息API返回失败:', response.msg);
                            }

                            // 第三步：组合提示词并生成AI内容
                            Controller.api.buildPromptAndGenerate(formData, $btn, $editor, originalHtml);
                        },
                        error: function (xhr, status, error) {
                            console.error('❌ 课程信息API调用失败:', error);
                            console.log('📝 将使用已有数据继续生成AI内容');

                            // 即使获取课程信息失败，也继续生成AI内容
                            Controller.api.buildPromptAndGenerate(formData, $btn, $editor, originalHtml);
                        }
                    });
                } else {
                    console.log('⚠️ 没有教学点ID，跳过课程信息获取');
                    // 没有教学点ID，直接进入下一步
                    Controller.api.buildPromptAndGenerate(formData, $btn, $editor, originalHtml);
                }
            },

            // 组合提示词并生成AI内容
            buildPromptAndGenerate: function (formData, $btn, $editor, originalHtml) {


                // 第三步：显示组合提示词状态
                $btn.html('<i class="fa fa-spinner fa-spin"></i> 第3步：组合提示词...');
                console.log('📝 开始组合增强提示词');

                // 构建包含真实地理信息和课程信息的增强提示词
                var enhancedPrompt = Controller.api.buildEnhancedOcationPrompt(formData);

                console.log('✅ 提示词组合完成');
                console.log('📊 提示词统计:');
                console.log('  - 总长度:', enhancedPrompt.length + '字符');
                console.log('  - 包含真实地理信息:', formData.realLocationData ? '是' : '否');
                console.log('  - 包含课程信息:', formData.coursesData ? '是' : '否');

                if (formData.realLocationData) {
                    var realData = formData.realLocationData;
                    console.log('🎯 真实地理信息已整合到提示词:');
                    if (realData.address) console.log('  ✓ 详细地址');
                    if (realData.transit && realData.transit.length > 0) console.log('  ✓ ' + realData.transit.length + '个公交站点');
                    if (realData.food && realData.food.length > 0) console.log('  ✓ ' + realData.food.length + '个美食商家');
                    if (realData.life && realData.life.length > 0) console.log('  ✓ ' + realData.life.length + '个生活服务');
                    if (realData.bank && realData.bank.length > 0) console.log('  ✓ ' + realData.bank.length + '个银行网点');
                    if (realData.hospital && realData.hospital.length > 0) console.log('  ✓ ' + realData.hospital.length + '个医疗机构');
                }

                if (formData.coursesData) {
                    var coursesData = formData.coursesData;
                    console.log('📚 课程信息已整合到提示词:');
                    console.log('  ✓ 课程总数: ' + coursesData.total_count + '个');
                    console.log('  ✓ 有效课程: ' + coursesData.active_count + '个');
                    console.log('  ✓ 课程分类: ' + coursesData.course_categories.join('、'));

                    var longTermCourses = coursesData.courses.filter(function (course) {
                        return course.is_long_term;
                    });
                    console.log('  ✓ 常年开设: ' + longTermCourses.length + '个');
                }

                // 显示完整的提示词（可选，用于调试）
                console.log('📋 完整提示词内容:');
                console.log(enhancedPrompt);

                // 第四步：调用AI生成
                Controller.api.callAIGeneration(enhancedPrompt, formData, $btn, $editor, originalHtml);
            },

            // 调用AI生成最终内容
            callAIGeneration: function (enhancedPrompt, formData, $btn, $editor, originalHtml) {
                // 第四步：显示AI生成状态
                $btn.html('<i class="fa fa-spinner fa-spin"></i> 第4步：AI生成中...');
                console.log('🤖 开始调用AI生成教学点详情');

                // 调用AI文本生成API
                $.ajax({
                    url: '/?s=ai/generateText',
                    type: 'POST',
                    data: {
                        prompt: enhancedPrompt,
                        type: 'ocation_intro_enhanced',
                        max_tokens: 1000,
                        temperature: 0.7
                    },
                    timeout: 120000,
                    success: function (response) {
                        console.log('✅ AI生成调用成功:', response);

                        if (response.code === 1 && response.data && response.data.content) {
                            // 清理和设置内容到编辑器
                            var content = Controller.api.cleanContent(response.data.content);

                            console.log('📝 生成内容统计:');
                            console.log('  - 原始长度:', response.data.content.length + '字符');
                            console.log('  - 清理后长度:', content.length + '字符');
                            console.log('  - 提供商:', response.data.provider);
                            console.log('  - Token使用:', response.data.tokens_used);

                            // 如果是Summernote编辑器
                            if ($editor.hasClass('editor') && typeof $editor.summernote === 'function') {
                                $editor.summernote('code', content);
                                console.log('✅ 内容已设置到Summernote编辑器');
                            } else {
                                $editor.val(content);
                                console.log('✅ 内容已设置到文本编辑器');
                            }

                            // 显示成功提示
                            var provider = response.data.provider || 'AI';
                            var note = response.data.note ? ' (' + response.data.note + ')' : '';
                            var hasRealData = formData.realLocationData ? '（含真实地理信息）' : '（基于表单信息）';
                            var successMsg = '教学点详情生成成功！' + hasRealData + note;

                            Layer.msg(successMsg, { icon: 1, time: 3000 });
                            console.log('🎉 AI生成流程完成:', successMsg);
                        } else {
                            var errorMsg = '教学点详情生成失败：' + (response.msg || '未知错误');
                            Layer.msg(errorMsg, { icon: 2, time: 5000 });
                            console.error('❌ AI生成失败:', errorMsg);
                        }
                    },
                    error: function (xhr, status, error) {
                        console.error('❌ AI生成请求失败:', xhr.responseText);

                        var errorMsg = '教学点详情生成失败';
                        if (xhr.status === 404) {
                            errorMsg += '：AI服务不可用';
                        } else if (xhr.status === 500) {
                            errorMsg += '：服务器错误';
                        } else if (status === 'timeout') {
                            errorMsg += '：请求超时，请稍后重试';
                        } else {
                            errorMsg += '：' + error;
                        }

                        Layer.msg(errorMsg, { icon: 2, time: 5000 });
                        console.error('❌ AI生成最终失败:', errorMsg);
                    },
                    complete: function () {
                        // 恢复按钮状态
                        $btn.html(originalHtml);
                        $btn.prop('disabled', false);
                        console.log('🔄 按钮状态已恢复');
                    }
                });
            },

            // 使用表单数据生成AI内容（没有经纬度时的降级方案）
            generateWithFormData: function (formData, $btn, $editor, originalHtml) {
                console.log('📝 没有经纬度信息，直接使用表单数据生成');

                // 直接组合提示词并生成
                Controller.api.buildPromptAndGenerate(formData, $btn, $editor, originalHtml);
            },

            // 构建增强的教学点提示词（包含真实地理信息和课程信息）
            buildEnhancedOcationPrompt: function (formData) {
                var prompt = '# AI教学点详情生成任务\n\n';
                prompt += '请根据以下信息生成一份专业且实用的教学点详情介绍：\n\n';
                prompt += '## 基本信息\n';

                if (formData.name) {
                    prompt += '**教学点名称：** ' + formData.name + '\n';
                }

                if (formData.location) {
                    prompt += '**所在区域：** ' + formData.location + '\n';
                }

                if (formData.address) {
                    prompt += '**地址描述：** ' + formData.address + '\n';
                }

                // 如果有真实地理信息，添加到提示词中
                if (formData.realLocationData) {
                    var realData = formData.realLocationData;

                    if (realData.address) {
                        prompt += '**详细地址：** ' + realData.address + '\n';
                    }

                    if (realData.transit && realData.transit.length > 0) {
                        prompt += '**周边公交站点：** ';
                        var transitNames = realData.transit.map(function (item) {
                            return item.name + '(' + item.distance + ')';
                        });
                        prompt += transitNames.join('、') + '\n';
                    }

                    if (realData.food && realData.food.length > 0) {
                        prompt += '**周边美食：** ';
                        var foodNames = realData.food.map(function (item) {
                            return item.name + (item.type ? '[' + item.type + ']' : '') + '(' + item.distance + ')';
                        });
                        prompt += foodNames.slice(0, 5).join('、') + '\n';
                    }

                    if (realData.life && realData.life.length > 0) {
                        prompt += '**周边生活服务：** ';
                        var lifeNames = realData.life.map(function (item) {
                            return item.name + (item.type ? '[' + item.type + ']' : '') + '(' + item.distance + ')';
                        });
                        prompt += lifeNames.slice(0, 5).join('、') + '\n';
                    }

                    if (realData.bank && realData.bank.length > 0) {
                        prompt += '**周边银行：** ';
                        var bankNames = realData.bank.map(function (item) {
                            return item.name + '(' + item.distance + ')';
                        });
                        prompt += bankNames.join('、') + '\n';
                    }

                    if (realData.hospital && realData.hospital.length > 0) {
                        prompt += '**周边医疗：** ';
                        var hospitalNames = realData.hospital.map(function (item) {
                            return item.name + '(' + item.distance + ')';
                        });
                        prompt += hospitalNames.join('、') + '\n';
                    }
                }

                // 如果有课程信息，添加到提示词中
                if (formData.coursesData) {
                    var coursesData = formData.coursesData;
                    prompt += '\n## 课程信息\n';

                    if (coursesData.total_count > 0) {
                        prompt += '**课程总数：** ' + coursesData.total_count + '个课程\n';
                        prompt += '**课程来源：** ' + (coursesData.search_scope || '当前教学点') + '\n';

                        if (coursesData.course_categories.length > 0) {
                            prompt += '**课程分类：** ' + coursesData.course_categories.join('、') + '\n';
                        }

                        // 常年开设的课程
                        var longTermCourses = coursesData.courses.filter(function (course) {
                            return course.is_long_term;
                        });

                        if (longTermCourses.length > 0) {
                            prompt += '**常年开设课程：** ';
                            var longTermNames = longTermCourses.map(function (course) {
                                var courseName = course.name + (course.category_name ? '[' + course.category_name + ']' : '');
                                if (course.is_from_child && course.source_ocation_name) {
                                    courseName += '(来自' + course.source_ocation_name + ')';
                                }
                                return courseName;
                            });
                            prompt += longTermNames.slice(0, 5).join('、') + '\n';
                        }

                        // 最新课程
                        if (coursesData.courses.length > 0) {
                            prompt += '**最新课程：** ';
                            var latestCourses = coursesData.courses.slice(0, 3).map(function (course) {
                                var courseName = course.name + (course.category_name ? '[' + course.category_name + ']' : '');
                                if (course.is_from_child && course.source_ocation_name) {
                                    courseName += '(来自' + course.source_ocation_name + ')';
                                }
                                return courseName;
                            });
                            prompt += latestCourses.join('、') + '\n';
                        }

                        // 统计子教学点课程
                        var childCourses = coursesData.courses.filter(function (course) {
                            return course.is_from_child;
                        });

                        if (childCourses.length > 0) {
                            prompt += '**下属教学点课程：** ' + childCourses.length + '个课程来自下属教学点\n';
                        }

                        // 详细课程内容（重点增强）
                        prompt += '\n**详细课程信息：**\n';
                        var coursesWithContent = coursesData.courses.filter(function (course) {
                            return course.has_content && course.content && course.content.trim() !== '';
                        });

                        if (coursesWithContent.length > 0) {
                            coursesWithContent.slice(0, 5).forEach(function (course, index) {
                                prompt += (index + 1) + '. **' + course.name + '**';
                                if (course.category_name) {
                                    prompt += ' [' + course.category_name + ']';
                                }
                                if (course.is_long_term) {
                                    prompt += ' (常年开设)';
                                }
                                if (course.is_from_child && course.source_ocation_name) {
                                    prompt += ' (来自' + course.source_ocation_name + ')';
                                }
                                prompt += '\n';

                                // 添加课程内容
                                var content = course.content.trim();
                                if (content.length > 200) {
                                    content = content.substring(0, 200) + '...';
                                }
                                prompt += '   内容：' + content + '\n';

                                // 添加课程简介（如果与内容不同）
                                if (course.intro && course.intro.trim() !== '' && course.intro !== course.content) {
                                    var intro = course.intro.trim();
                                    if (intro.length > 100) {
                                        intro = intro.substring(0, 100) + '...';
                                    }
                                    prompt += '   简介：' + intro + '\n';
                                }
                                prompt += '\n';
                            });
                        } else {
                            // 如果没有详细内容，至少列出课程名称和简介
                            prompt += '课程列表：\n';
                            coursesData.courses.slice(0, 5).forEach(function (course, index) {
                                prompt += (index + 1) + '. **' + course.name + '**';
                                if (course.category_name) {
                                    prompt += ' [' + course.category_name + ']';
                                }
                                if (course.is_long_term) {
                                    prompt += ' (常年开设)';
                                }
                                prompt += '\n';

                                if (course.intro && course.intro.trim() !== '') {
                                    var intro = course.intro.trim();
                                    if (intro.length > 100) {
                                        intro = intro.substring(0, 100) + '...';
                                    }
                                    prompt += '   简介：' + intro + '\n';
                                } else if (course.description && course.description.trim() !== '') {
                                    var desc = course.description.trim();
                                    if (desc.length > 100) {
                                        desc = desc.substring(0, 100) + '...';
                                    }
                                    prompt += '   描述：' + desc + '\n';
                                }
                                prompt += '\n';
                            });
                        }
                    } else {
                        prompt += '**课程状态：** 暂无开设课程，欢迎咨询最新课程安排\n';
                    }
                }

                if (formData.ocation_type) {
                    prompt += '\n**教学类型：** ' + formData.ocation_type + '\n';
                }

                if (formData.entvirt) {
                    prompt += '**场地性质：** ' + formData.entvirt + '\n';
                }

                if (formData.level) {
                    prompt += '**教学点等级：** ' + formData.level + '\n';
                }

                if (formData.rel_type) {
                    prompt += '**所属主体：** ' + formData.rel_type + '\n';
                }

                prompt += '\n## 生成要求\n';
                prompt += '1. **字数限制**：严格控制在500字以内\n';
                prompt += '2. **内容结构**：必须包含以下7个部分\n';
                prompt += '   - 教学点概述（基本介绍）\n';
                prompt += '   - 设施特色（教学设备和环境）\n';
                prompt += '   - 常年开设课程（重点介绍长期课程和特色课程）\n';
                prompt += '   - 交通指南（基于真实公交站点信息）\n';
                prompt += '   - 周边配套（基于真实POI信息的美食和生活服务）\n';
                prompt += '   - 教学优势（教育特色和服务）\n';
                prompt += '   - 联系服务（咨询和报名信息）（所有电话都使用教务处电话：0771-3160330）\n';
                prompt += '3. **语言风格**：专业、实用、有吸引力\n';
                prompt += '4. **格式要求**：使用HTML格式，每个部分用h4标题+p段落\n';
                prompt += '5. **课程信息重点**：\n';

                if (formData.coursesData && formData.coursesData.total_count > 0) {
                    prompt += '   - 重点突出常年开设的课程，体现教学点的稳定性\n';
                    prompt += '   - 介绍课程分类的丰富性和专业性\n';
                    prompt += '   - 结合课程特色说明教学点的教育优势\n';
                    prompt += '   - **必须使用上述提供的具体课程名称和内容描述**\n';
                    prompt += '   - 根据课程内容特点，突出教学点的专业特色和教学优势\n';
                    prompt += '   - 将课程内容转化为吸引人的教学点特色介绍\n';

                    // 检查是否有详细课程内容
                    var hasDetailedContent = formData.coursesData.courses.some(function (course) {
                        return course.has_content && course.content && course.content.trim() !== '';
                    });

                    if (hasDetailedContent) {
                        prompt += '   - 基于提供的课程详细内容，生成具体而有吸引力的课程介绍\n';
                        prompt += '   - 避免空泛的描述，要体现课程的实际内容和特色\n';
                    }

                    // 检查是否有来自子教学点的课程
                    var hasChildCourses = formData.coursesData.courses.some(function (course) {
                        return course.is_from_child;
                    });

                    if (hasChildCourses) {
                        prompt += '   - 如果课程来自下属教学点，可以说明教学体系的完整性和资源共享\n';
                        prompt += '   - 强调教学点网络化管理，学员可享受更多课程选择\n';
                    }
                } else {
                    prompt += '   - 说明教学点具备开设多种课程的条件和能力\n';
                    prompt += '   - 强调可根据需求定制课程的灵活性\n';
                }

                prompt += '6. **真实信息优先**：\n';

                if (formData.realLocationData) {
                    prompt += '   - 优先使用上述提供的真实公交站点、美食、生活服务信息\n';
                    prompt += '   - 交通指南要基于真实的公交站点名称和距离\n';
                    prompt += '   - 周边配套要基于真实的商家名称和类型\n';
                } else {
                    prompt += '   - 根据地址描述合理推测交通和周边信息\n';
                }

                prompt += '7. **实用性强**：内容要有实际价值，帮助用户了解教学点的便利性和教学特色\n\n';
                prompt += '请生成完整的教学点详情介绍：';

                return prompt;
            },

            // 内容清理函数
            cleanContent: function (content) {
                if (!content) return '';

                // 移除可能的markdown标记
                content = content.replace(/```html\s*/g, '');
                content = content.replace(/```\s*/g, '');
                content = content.replace(/^\s*#\s+/gm, '');

                // 确保基本的HTML结构
                if (!content.includes('<p>') && !content.includes('<div>')) {
                    content = '<p>' + content.replace(/\n\n/g, '</p><p>').replace(/\n/g, '<br>') + '</p>';
                }

                return content.trim();
            },

            // 初始化图片组管理功能（参考classes模块实现）
            initImageGroups: function (mode) {
                var maxImages = 5;
                var imageCount = mode === 'add' ? 1 : 0;

                // 初始化图片组
                function initGroups() {
                    if (mode === 'edit') {
                        loadExistingImages();
                    } else {
                        addImageGroup();
                    }
                }

                // 如果DOM已经加载完成，立即初始化
                if (document.readyState === 'complete') {
                    initGroups();
                } else {
                    // 否则等待DOM加载完成后再初始化
                    $(document).ready(initGroups);
                }

                // 图片组模板函数
                function getImageGroupTemplate(index, data) {
                    data = data || {};
                    // 添加隐藏字段
                    var hiddenIdField = data.id ? `<input type="hidden" name="images[${index}][id]" value="${data.id}" />` : '';
                    return `\n` +
                        `<div class="form-group slider-image-group" data-index="${index}">\n` +
                        `    <div class="panel panel-info">\n` +
                        `        <div class="panel-heading">\n` +
                        `            <h5 class="panel-title">\n` +
                        `                <i class="fa fa-image"></i> 图片 ${index + 1}\n` +
                        `                <button type="button" class="btn btn-xs btn-danger pull-right remove-image-group" style="margin-top: -2px;">\n` +
                        `                    <i class="fa fa-trash"></i> 删除\n` +
                        `                </button>\n` +
                        `            </h5>\n` +
                        `        </div>\n` +
                        `        <div class="panel-body">\n` +
                        `            <div class="row">\n` +
                        `                <div class="col-md-4">\n` +
                        `                    <div class="form-group">\n` +
                        `                        <label class="control-label">图片标题:</label>\n` +
                        `                        <input type="text" name="images[${index}][title]" class="form-control" placeholder="请输入图片标题" data-tip="图片标题" value="${data.title || ''}" />\n` +
                        `                        ${hiddenIdField}\n` +
                        `                    </div>\n` +
                        `                </div>\n` +
                        `                <div class="col-md-4">\n` +
                        `                    <div class="form-group">\n` +
                        `                        <label class="control-label">图片链接:</label>\n` +
                        `                        <input type="text" name="images[${index}][href]" class="form-control" placeholder="请输入图片链接" data-tip="图片链接" value="${data.href || ''}" />\n` +
                        `                    </div>\n` +
                        `                </div>\n` +
                        `                <div class="col-md-4">\n` +
                        `                    <div class="form-group">\n` +
                        `                        <label class="control-label">图片地址:</label>\n` +
                        `                        <div class="input-group">\n` +
                        `                            <input type="text" name="images[${index}][url]" class="form-control image-url-input" placeholder="请选择图片" value="${data.url || ''}" id="images-${index}-url" />\n` +
                        `                            <div class="input-group-btn">\n` +
                        `                                <button type="button" class="btn btn-danger plupload" data-input-id="images-${index}-url" data-mimetype="image/*" data-multiple="false" data-preview-id="p-images-${index}">\n` +
                        `                                    <i class="fa fa-upload"></i>\n` +
                        `                                </button>\n` +
                        `                                <button type="button" class="btn btn-success collect-btn" data-group-index="${index}">\n` +
                        `                                    <i class="fa fa-download"></i> 抓取\n` +
                        `                                </button>\n` +
                        `                            </div>\n` +
                        `                        </div>\n` +
                        `                        <ul class="row list-inline plupload-preview" id="p-images-${index}" style="margin-top: 10px;"></ul>\n` +
                        `                    </div>\n` +
                        `                </div>\n` +
                        `            </div>\n` +
                        `        </div>\n` +
                        `    </div>\n` +
                        `</div>\n`;
                }

                // 添加图片组
                function addImageGroup(data) {
                    if (imageCount < maxImages) {
                        imageCount++;
                        var $newGroup = $(getImageGroupTemplate(imageCount - 1, data));
                        $('#slider-images-container').append($newGroup);

                        // 初始化上传组件
                        $newGroup.find('.plupload').each(function () {
                            var $btn = $(this);
                            if (typeof require !== 'undefined') {
                                require(['upload'], function (Upload) {
                                    Upload.api.plupload($btn);
                                });
                            }
                        });

                        updateImageCount();
                        updatePanelHeight();
                        return $newGroup;
                    }
                    return null;
                }

                // 删除图片组
                function removeImageGroup($group) {
                    var index = $group.data('index');
                    if (index < 0) {
                        return;
                    }

                    // 确认删除
                    if (confirm('确定要删除这个图片组吗？')) {
                        $group.remove();
                        imageCount--;
                        updateImageCount();
                        updateHiddenField();
                        updatePanelHeight();

                        // 更新索引
                        $('#slider-images-container').find('.slider-image-group').each(function (i) {
                            $(this).data('index', i);
                        });
                    }
                }

                // 更新面板高度
                function updatePanelHeight() {
                    var $panelBody = $('#slider-images-container').closest('.panel-body');
                    var $container = $('#slider-images-container');

                    // 移除固定高度，让内容自然撑开
                    $panelBody.css({
                        'height': 'auto',
                        'min-height': '200px'
                    });

                    // 确保容器样式正确
                    $container.css({
                        'margin': '0',
                        'padding': '0'
                    });

                    // 如果没有图片组，设置最小高度
                    if ($container.find('.slider-image-group').length === 0) {
                        $panelBody.css('min-height', '100px');
                    }
                }

                // 更新图片计数显示
                function updateImageCount() {
                    $('#image-count').text(imageCount);
                    if (imageCount >= maxImages) {
                        $('#add-image-group').prop('disabled', true).addClass('disabled');
                    } else {
                        $('#add-image-group').prop('disabled', false).removeClass('disabled');
                    }
                }

                // 更新隐藏字段的JSON数据
                function updateHiddenField() {
                    var images = [];
                    $('.slider-image-group').each(function () {
                        var $group = $(this);
                        var imageData = {
                            title: $group.find('input[name*="[title]"]').val() || '',
                            href: $group.find('input[name*="[href]"]').val() || '',
                            url: $group.find('input[name*="[url]"]').val() || ''
                        };
                        if (imageData.url || imageData.title || imageData.href) {
                            images.push(imageData);
                        }
                    });
                    $('#c-image').val(JSON.stringify(images));
                }

                // 从隐藏字段加载现有数据
                function loadExistingImages() {
                    var existingData = $('#c-image').val();
                    if (existingData) {
                        try {
                            var images = JSON.parse(existingData);
                            if (Array.isArray(images)) {
                                images.forEach(function (imageData) {
                                    // 确保每个字段都有默认值
                                    var normalizedData = {
                                        title: imageData.title || '',
                                        href: imageData.href || '',
                                        url: imageData.url || '',
                                        id: imageData.id || ''
                                    };
                                    addImageGroup(normalizedData);
                                });
                                imageCount = images.length;
                            }
                        } catch (e) {
                            console.warn('解析现有图片数据失败:', e);
                            // 解析失败时添加一个空的图片组
                            addImageGroup();
                        }
                    } else {
                        // 没有现有数据时添加一个空的图片组
                        addImageGroup();
                    }

                    updateImageCount();
                }

                // 添加图片按钮事件
                $(document).on('click', '#add-image-group', function () {
                    addImageGroup();
                });

                // 绑定图片组输入框的change事件
                $(document).on('change', '.slider-image-group input', function () {
                    updateHiddenField();
                });

                // 绑定抓取按钮事件
                $(document).on('click', '.collect-btn', function () {
                    var $btn = $(this);
                    var groupIndex = $btn.data('group-index');
                    var $group = $(this).closest('.slider-image-group');
                    // 获取图片链接输入框
                    var $hrefInput = $group.find('input[name*="[href]"]');
                    var s_url = $hrefInput.val().trim();

                    // 如果输入框为空，尝试从剪贴板获取链接
                    tryGetClipboardUrl(function (clipboardUrl) {
                        if (clipboardUrl) {
                            $hrefInput.val("");
                            $hrefInput.val(clipboardUrl);
                            performCollect($btn, clipboardUrl);
                            return;
                        } else {
                            Toastr.warning('请先在图片链接框中输入要抓取的网址');
                            $hrefInput.focus();
                            return;
                        }
                    });

                    if (s_url) {
                        // 如果输入框有内容，直接抓取
                        performCollect($btn, s_url);
                    }
                });

                // 删除图片组事件
                $(document).on('click', '.remove-image-group', function () {
                    var $group = $(this).closest('.slider-image-group');
                    removeImageGroup($group);
                });

                // 尝试从剪贴板获取URL
                function tryGetClipboardUrl(callback) {
                    try {
                        navigator.clipboard.readText().then(text => {
                            var url = text.match(/https?:\/\//g);
                            if (url && url.length > 0) {
                                callback(text);
                            } else {
                                callback(null);
                            }
                        }).catch(err => {
                            callback(null);
                        });
                    } catch (err) {
                        callback(null);
                    }
                }

                // 执行抓取操作
                function performCollect($btn, s_url) {
                    if (!isValidUrl(s_url)) {
                        Toastr.error('请输入正确的网址格式');
                        return;
                    }

                    var originalText = $btn.html();
                    $btn.html('<i class="fa fa-spinner fa-spin"></i> 抓取中...').prop('disabled', true);

                    // 使用JSONP方式发送请求
                    jsonpRequest({
                        url: 'https://collect.longsunhd.com/collect/index.php',
                        data: {
                            s_url: encodeURIComponent(s_url),
                            gather_type: 1
                        },
                        success: function (data) {
                            if (data) {
                                var $group = $btn.closest('.slider-image-group');
                                console.log('抓取到的数据:', data);
                                console.log('找到的图片组:', $group.length);

                                // 填入标题
                                if (data.subject) {
                                    var cleanTitle = data.subject.replace(/\s+/g, ' ').trim();
                                    var $titleInput = $group.find('input[name*="[title]"]');
                                    console.log('标题输入框:', $titleInput.length, '标题:', cleanTitle);
                                    $titleInput.val(cleanTitle);
                                }

                                // 填入图片地址
                                if (data.thumb) {
                                    var thumbValue = Array.isArray(data.thumb) ? data.thumb[0] : data.thumb;
                                    var $urlInput = $group.find('input[name*="[url]"]');
                                    console.log('图片地址输入框:', $urlInput.length, '图片地址:', thumbValue);
                                    console.log('输入框name属性:', $urlInput.attr('name'));
                                    $urlInput.val(thumbValue);

                                    // 强制触发change事件
                                    $urlInput.trigger('change');

                                    // 验证是否设置成功
                                    console.log('设置后的值:', $urlInput.val());
                                }

                                Toastr.success('抓取成功！');
                                updateHiddenField();
                                return false;
                            } else {
                                Toastr.error('抓取失败，返回数据格式错误');
                            }
                        },
                        error: function (error) {
                            Toastr.error('抓取失败：' + error);
                        },
                        complete: function () {
                            $btn.html(originalText).prop('disabled', false);
                        }
                    });
                }

                // URL格式验证函数
                function isValidUrl(string) {
                    return string &&
                        string.toLowerCase().startsWith('http') &&
                        string.match(/https?:\/\/(?:[\w-]+\.)+[\w-]+(?:\/[\w-]*)*(?:\/[\w-]*)?/g);
                }

                // JSONP请求函数
                function jsonpRequest(options) {
                    $.ajax({
                        url: options.url,
                        data: options.data,
                        dataType: 'jsonp',
                        success: function (data) {
                            if (options.success) {
                                options.success(data);
                            }
                        },
                        error: function (xhr, status, error) {
                            if (options.error) {
                                options.error(error);
                            }
                        },
                        complete: function () {
                            if (options.complete) {
                                options.complete();
                            }
                        }
                    });
                }

                // 初始化已在上面的DOM ready逻辑中处理，这里不需要重复调用

                // 暴露updateHiddenField函数供外部调用
                Controller.api.updateHiddenField = updateHiddenField;
            },

            // 绑定教学点名称验证
            bindNameValidation: function () {
                var nameInput = $('#c-name');
                var pidInput = $('#c-ocation_pid'); // 修正父级选择框ID
                var nameValidationMsg = $('#name-validation-msg');

                // 如果没有验证消息容器，创建一个
                if (nameValidationMsg.length === 0) {
                    nameInput.after('<div id="name-validation-msg" class="help-block" style="color: red; margin-top: 5px;"></div>');
                    nameValidationMsg = $('#name-validation-msg');
                }

                // 防抖函数
                var debounceTimer;
                function debounce(func, delay) {
                    return function () {
                        var context = this;
                        var args = arguments;
                        clearTimeout(debounceTimer);
                        debounceTimer = setTimeout(function () {
                            func.apply(context, args);
                        }, delay);
                    };
                }

                // 验证名称函数
                function validateName() {
                    var name = nameInput.val().trim();
                    var pid = pidInput.val() || 0;
                    var id = $('input[name="row[id]"]').val() || 0;

                    if (!name) {
                        nameValidationMsg.text('');
                        return;
                    }

                    // 发送AJAX请求验证
                    $.ajax({
                        url: '/ocation/ocation/checkName',
                        type: 'POST',
                        data: {
                            name: name,
                            pid: pid,
                            id: id
                        },
                        success: function (response) {
                            if (response.code === 1) {
                                nameValidationMsg.text('').css('color', 'green');
                            } else {
                                nameValidationMsg.text(response.msg).css('color', 'red');
                            }
                        },
                        error: function () {
                            nameValidationMsg.text('验证失败，请稍后重试').css('color', 'red');
                        }
                    });
                }

                // 绑定输入事件（使用防抖）
                nameInput.on('input', debounce(validateName, 500));

                // 绑定失去焦点事件（立即验证）
                nameInput.on('blur', function () {
                    var name = $(this).val().trim();
                    if (name) {
                        // 清除防抖定时器，立即执行验证
                        clearTimeout(debounceTimer);
                        validateName();
                    } else {
                        nameValidationMsg.text('');
                    }
                });

                // 绑定父级选择变化事件
                pidInput.on('change', function () {
                    if (nameInput.val().trim()) {
                        validateName();
                    }
                });
            },

            // 绑定教学点等级选择变化事件
            bindLevelChange: function () {
                console.log('ocation.js - bindLevelChange 方法被调用');
                var levelSelect = $('#c-address_lv_octionlevel');
                console.log('ocation.js - 教学点等级选择框元素数量:', levelSelect.length);

                // 定义需要隐藏的字段选择器
                var fieldsToHide = [
                    '.form-group:has(#div-cityarea_id)',     // 行政区划
                    '.form-group:has(#div-longitude)',       // 经纬度定位
                    '.form-group:has(#div-address)',         // 描述
                    '.form-group:has(#div-intro)',           // 教学点详情
                    '.form-group:has(#div-cover)',           // 教学点封面
                    '.form-group:has(label:contains("轮播图片"))', // 轮播图片
                    '.form-group:has(#div-status)'           // 状态
                ];

                // 切换字段显示/隐藏的函数
                function toggleFields(isTag) {
                    // 使用更直接的方式查找字段
                    var $cityareaField = $('#div-cityarea_id').closest('.form-group');
                    var $longitudeField = $('#div-longitude').closest('.form-group');
                    var $addressField = $('#div-address').closest('.form-group');
                    var $introField = $('#div-intro').closest('.form-group');
                    var $coverField = $('#div-cover').closest('.form-group');
                    var $statusField = $('#div-status').closest('.form-group');

                    // 轮播图片字段需要特殊处理，因为它的结构比较复杂
                    var $imageField = $('label:contains("轮播图片")').closest('.form-group');

                    var allFields = [$cityareaField, $longitudeField, $addressField, $introField, $coverField, $imageField, $statusField];

                    allFields.forEach(function ($field) {
                        if ($field.length > 0) {
                            if (isTag) {
                                $field.hide();
                            } else {
                                $field.show();
                            }
                        }
                    });
                }

                // 控制实体或虚拟字段和校内校外字段显示/隐藏的函数
                function toggleConditionalFields(level) {
                    console.log('ocation.js - bindLevelChange - 当前教学点等级:', level);

                    var $entvirtGroup = $('#entvirt-group');
                    var $schoolLocationGroup = $('#school_location_type_group');

                    console.log('ocation.js - 实体虚拟字段元素数量:', $entvirtGroup.length);
                    console.log('ocation.js - 校内校外字段元素数量:', $schoolLocationGroup.length);

                    // 只有在教学点级为2或3时才显示实体虚拟字段
                    if (level == '2') {
                        $entvirtGroup.show();
                        // 强制移除隐藏样式，确保显示
                        $entvirtGroup.css('display', 'block');
                        $entvirtGroup.removeClass('hidden');
                        console.log('ocation.js - 显示实体虚拟字段, 当前display样式:', $entvirtGroup.css('display'));
                    } else {
                        $entvirtGroup.hide();
                        console.log('ocation.js - 隐藏实体虚拟字段');
                    }

                    // 只有在教学点级为3或4时才显示校内校外字段
                    if (level == '3' || level == '4') {
                        $schoolLocationGroup.show();
                        // 强制移除隐藏样式，确保显示
                        $schoolLocationGroup.css('display', 'block');
                        $schoolLocationGroup.removeClass('hidden');
                        console.log('ocation.js - 显示校内校外字段, 当前display样式:', $schoolLocationGroup.css('display'));
                    } else {
                        $schoolLocationGroup.hide();
                        // 隐藏时清空选择
                        $schoolLocationGroup.find('input[type="checkbox"]').prop('checked', false);
                        console.log('ocation.js - 隐藏校内校外字段');
                    }
                }

                // 控制教室作息设置标签页显示/隐藏的函数
                function toggleClassroomScheduleTab(level) {
                    console.log('ocation.js - bindLevelChange - 控制教室作息设置标签页, 当前教学点等级:', level);

                    var $classroomTab = $('#classroomdiv').closest('li');
                    console.log('ocation.js - 教室作息设置标签页元素数量:', $classroomTab.length);

                    // 只有在教学点等级为3或4时才显示教室作息设置标签页
                    if (level == '3' || level == '4') {
                        $classroomTab.show();
                        // 强制移除隐藏样式，确保显示
                        $classroomTab.css('display', 'block');
                        $classroomTab.removeClass('hidden');
                        console.log('ocation.js - 显示教室作息设置标签页, 当前display样式:', $classroomTab.css('display'));
                    } else {
                        $classroomTab.hide();
                        console.log('ocation.js - 隐藏教室作息设置标签页');
                    }
                }

                // 控制别名字段显示/隐藏的函数
                function toggleAliasField(level) {
                    var $aliasGroup = $('#div-alias').closest('.form-group');
                    // 当教学点等级大于3时隐藏别名输入框
                    if (parseInt(level) > 3) {
                        $aliasGroup.hide();
                    } else {
                        $aliasGroup.show();
                    }
                }

                // 初始化时检查当前值
                var currentValue = levelSelect.val();
                if (currentValue === '0') {
                    toggleFields(true);
                }
                // 初始化条件字段显示状态
                toggleConditionalFields(currentValue);
                // 初始化教室作息设置标签页显示状态
                toggleClassroomScheduleTab(currentValue);
                // 初始化别名字段显示状态
                toggleAliasField(currentValue);

                // 绑定选择变化事件
                levelSelect.on('change', function () {
                    var selectedValue = $(this).val();
                    var isTag = selectedValue === '0'; // 0表示"标签"
                    toggleFields(isTag);
                    // 控制条件字段显示
                    toggleConditionalFields(selectedValue);
                    // 控制教室作息设置标签页显示
                    toggleClassroomScheduleTab(selectedValue);
                    // 控制别名字段显示
                    toggleAliasField(selectedValue);
                });
            }
        }
    };
    return Controller;
});